home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 June: Reference Library / Dev.CD Jun 96 RL / Dev.CD Jun 96 RL.toast / Technical Documentation / develop / develop Issue 24 / develop Issue 24 code / Scriptable Database 1.0a15 / Foundation / ResolveObjectSpecifier.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-19  |  3.8 KB  |  97 lines  |  [TEXT/CWIE]

  1.  
  2. #ifndef __RESOLVEOBJECTSPECIFIER__
  3. #define __RESOLVEOBJECTSPECIFIER__
  4.  
  5. //
  6. // For TDescriptor
  7. //
  8. #include "MoreAEM.h"
  9.  
  10. class TAbstractScriptableObject;
  11. class TAbstractObjectSpecifier;
  12. class TAETransaction;
  13.  
  14. TTokenDescriptor ResolveObjectSpecifier(const TAETransaction& t, TDescriptor objectSpecifier, TDescriptor* objectThatCausedError = nil);
  15. TAbstractScriptableObject* GetNullContainer();
  16. TAbstractObjectSpecifier* ParseObjectSpecifier(TDescriptor objectSpecifier, DescType desiredClassOfParent = typeNull, DescType keyFormOfParent = typeNull, TDescriptor* keyDataOfParent = nil);
  17.  
  18. //========================================================================================
  19. // Class TAbstractObjectSpecifier
  20. //========================================================================================
  21.  
  22. class TAbstractObjectSpecifier
  23.     {
  24. public:
  25.     virtual ~TAbstractObjectSpecifier();
  26.     
  27.     virtual DescType                        KeyForm() const;
  28.     virtual TAbstractObjectSpecifier*        ExtractParentSpecifier(DescType& desiredClass, DescType& keyForm, TDescriptor& keyData);
  29.     virtual Boolean                            RootContainerIsObjectBeingExamined() const;
  30.     virtual TDescriptor                        BuildObjectSpecifier() const = 0;
  31.         
  32.     virtual TAbstractScriptableObject*        ResolveToken(const TAETransaction& t, TAbstractScriptableObject* objectBeingExamined, TDescriptor* objectThatCausedError = nil) const = 0;
  33.     };
  34.  
  35. //========================================================================================
  36. // Class TObjectSpecifier
  37. //========================================================================================
  38.  
  39. class TObjectSpecifier : public TAbstractObjectSpecifier
  40.     {
  41. private:
  42.     DescType                                fDesiredClass;
  43.     DescType                                fKeyForm;
  44.     TDescriptor                                fKeyData;
  45.     TAbstractObjectSpecifier*                fContainer;
  46.     
  47.     TAbstractScriptableObject*                fCachedToken;
  48.     TAbstractScriptableObject*                fCachedObjectBeingExamined;
  49.     
  50. public:
  51.     TObjectSpecifier(DescType desiredClass, DescType keyForm, TDescriptor keyData, TAbstractObjectSpecifier* container) :
  52.         fDesiredClass(desiredClass), fKeyForm(keyForm), fKeyData(keyData), fContainer(container), fCachedToken(nil), fCachedObjectBeingExamined(nil) {};
  53.     virtual ~TObjectSpecifier();
  54.     
  55.     virtual DescType                        KeyForm() const;
  56.     virtual TAbstractObjectSpecifier*        ExtractParentSpecifier(DescType& desiredClass, DescType& keyForm, TDescriptor& keyData);
  57.     virtual Boolean                            RootContainerIsObjectBeingExamined() const;
  58.     virtual TDescriptor                        BuildObjectSpecifier() const;
  59.  
  60.     virtual TAbstractScriptableObject*        ResolveToken(const TAETransaction& t, TAbstractScriptableObject* objectBeingExamined, TDescriptor* objectThatCausedError = nil) const;
  61.     };
  62.  
  63. //========================================================================================
  64. // Class TObjectBeingExamined
  65. //========================================================================================
  66.  
  67. class TObjectBeingExamined : public TAbstractObjectSpecifier
  68.     {
  69. public:
  70.     virtual DescType                        KeyForm() const;
  71.     virtual Boolean                            RootContainerIsObjectBeingExamined() const;
  72.     virtual TDescriptor                        BuildObjectSpecifier() const;
  73.  
  74.     virtual TAbstractScriptableObject*        ResolveToken(const TAETransaction& t, TAbstractScriptableObject* objectBeingExamined, TDescriptor* objectThatCausedError = nil) const;
  75.     };
  76.  
  77. //========================================================================================
  78. // Class TArbitrarySpecifier
  79. //========================================================================================
  80.  
  81. class TArbitrarySpecifier : public TAbstractObjectSpecifier
  82.     {
  83. private:
  84.     TDescriptor                                fKeyData;
  85.     
  86. public:
  87.     TArbitrarySpecifier(TDescriptor keyData) : fKeyData(keyData) {}
  88.     virtual ~TArbitrarySpecifier();
  89.  
  90.     virtual TDescriptor                        BuildObjectSpecifier() const;
  91.     
  92.     virtual TAbstractScriptableObject*        ResolveToken(const TAETransaction& t, TAbstractScriptableObject* objectBeingExamined, TDescriptor* objectThatCausedError = nil) const;
  93.     };
  94.     
  95.  
  96. #endif
  97.